import Vue from 'vue'
import App from './App.vue'
/* 导入mint-ui */
// import { Header,Swipe, SwipeItem, Button,Lazyload} from 'mint-ui';
// Vue.component(Header.name, Header);
// Vue.component(Swipe.name, Swipe);
// Vue.component(SwipeItem.name, SwipeItem);
// Vue.component(Button.name, Button);
// Vue.use(Lazyload);
/* 导入mint-ui */
import MintUI from 'mint-ui'
import 'mint-ui/lib/style.css'
Vue.use(MintUI)


import './lib/css/mui.min.css';
import './lib/css/icons-extra.css';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
//导入格式化时间插件
import moment from 'moment'
//定义全局过滤器
Vue.filter('dataFormat',function(dataStr,pattern='YYYY-MM-DD HH:mm:ss'){
 return moment(dataStr).format(pattern)
})
// import VueResource from'vue-resource'
// Vue.use(VueResource);

/* 导入element */
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
import router from './pages/router.js'

/* 导入vue-preview 图片预览插件 */
import VuePreview from 'vue-preview'
Vue.use(VuePreview)

//注册vuex
import Vuex from 'vuex'
Vue.use(Vuex)
//将本地存储的数据返回给car
var car =JSON.parse(localStorage.getItem('car')||'[]')

var store=new Vuex.Store({
   state:{//this.$store.state.***
     car:car//将购物车中商品的数据，用一个数组存储起来
   },
   mutations:{//this.$store.commit()
     addToCar(state,bookinfo){
       //点击加入购物车，把商品信息保存到state中的car上
       //1.如果购物车中，之前已经有这个对应的商品，那么只需要更新数据
       //2.如果没有，直接把商品数据,push到car中

       //假设在购物车中没有找到对应商品
       var flag=false

       state.car.some(item=>{
         if(item.id==bookinfo.id){
           item.count+=parseInt(bookinfo.count)
           flag=true
           return true
         }
       })
       if(!flag){
        state.car.push(bookinfo)
       }
      //当更新car之后，把car数组，存储到本地的localStorage中
      localStorage.setItem('car',JSON.stringify(state.car))
     },
     //修改购物车中商品的数量值
     updateGoodInfo(state,goodsinfo){
       state.car.some(item=>{
         if(item.id==goodsinfo.id){
           item.count=parseInt(goodsinfo.count)
           return true
         }
       })
       //当修改商品的数量，把最新的购物车数据，保存到本地存储中
        localStorage.setItem('car',JSON.stringify(state.car))
     },
      removeFromCar(state,id){
        //根据id 从store中的购物车删除对应的那条商品数据
        state.car.some(item=>{
          if(item.id=id){
            state.splice(i,1)
            return true
          }
        })
        localStorage.setItem('car',JSON.stringify(state.car))
      }

   },


   //如果最终，循环完毕 ，得到的flag还是false，则把商品数据直接push到购物车中
   getters:{//this.$store.getters.
        getAllCount(state){
           var c=0;
           state.car.forEach(item=>{
             c+=item.count
           })
            return c
        },
        getGoodCount(state){
          var un={}
          state.car.forEach(item=>{
            un[item.id]=item.count
          })
          return un
        },
        getBookSelected(state){
          var queue={}
          state.car.forEach(item=>{
            queue[item.id]=item.selected
          })
          return queue
        },
       getBookMount(state){
         var o={
           count:0,//勾选的数量
           amount:0//勾选的总价
         }
         state.car.forEach(item=>{
           if(item.selected){
             o.count+=item.count
             o.amount+=item.price*item.count
           }
         })
         return o
       }


   },

})



new Vue({
  el:'#app',
  render:c=>c(App),
  router, //挂载路由对象到vm实例上
  store
})
